lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
F_33(pair2(Y, Z), N, X) -> APPEND2(qsort1(Y), add2(X, qsort1(Z)))
F_14(pair2(X, Z), N, M, Y) -> F_26(lt2(N, M), N, M, Y, X, Z)
F_14(pair2(X, Z), N, M, Y) -> LT2(N, M)
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
LT2(s1(X), s1(Y)) -> LT2(X, Y)
SPLIT2(N, add2(M, Y)) -> F_14(split2(N, Y), N, M, Y)
APPEND2(add2(N, X), Y) -> APPEND2(X, Y)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
QSORT1(add2(N, X)) -> SPLIT2(N, X)
SPLIT2(N, add2(M, Y)) -> SPLIT2(N, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
F_33(pair2(Y, Z), N, X) -> APPEND2(qsort1(Y), add2(X, qsort1(Z)))
F_14(pair2(X, Z), N, M, Y) -> F_26(lt2(N, M), N, M, Y, X, Z)
F_14(pair2(X, Z), N, M, Y) -> LT2(N, M)
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
LT2(s1(X), s1(Y)) -> LT2(X, Y)
SPLIT2(N, add2(M, Y)) -> F_14(split2(N, Y), N, M, Y)
APPEND2(add2(N, X), Y) -> APPEND2(X, Y)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
QSORT1(add2(N, X)) -> SPLIT2(N, X)
SPLIT2(N, add2(M, Y)) -> SPLIT2(N, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
APPEND2(add2(N, X), Y) -> APPEND2(X, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APPEND2(add2(N, X), Y) -> APPEND2(X, Y)
POL(APPEND2(x1, x2)) = 2·x1
POL(add2(x1, x2)) = 1 + 2·x2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
LT2(s1(X), s1(Y)) -> LT2(X, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LT2(s1(X), s1(Y)) -> LT2(X, Y)
POL(LT2(x1, x2)) = 2·x1 + x2
POL(s1(x1)) = 2 + 2·x1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
SPLIT2(N, add2(M, Y)) -> SPLIT2(N, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
SPLIT2(N, add2(M, Y)) -> SPLIT2(N, Y)
POL(SPLIT2(x1, x2)) = 2·x2
POL(add2(x1, x2)) = 1 + 2·x2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
Used ordering: Polynomial interpretation [21]:
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
POL(0) = 1
POL(F_33(x1, x2, x3)) = 1 + x1
POL(QSORT1(x1)) = 1 + 2·x1
POL(add2(x1, x2)) = 1 + x1 + x2
POL(f_14(x1, x2, x3, x4)) = 2 + x1 + 2·x3
POL(f_26(x1, x2, x3, x4, x5, x6)) = 2 + 2·x1 + 2·x3 + 2·x5 + 2·x6
POL(false) = 0
POL(lt2(x1, x2)) = 0
POL(nil) = 0
POL(pair2(x1, x2)) = 2·x1 + 2·x2
POL(s1(x1)) = 2 + x1
POL(split2(x1, x2)) = 2·x1 + 2·x2
POL(true) = 0
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
lt2(s1(X), s1(Y)) -> lt2(X, Y)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
lt2(0, s1(X)) -> true
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
split2(N, nil) -> pair2(nil, nil)
lt2(s1(X), 0) -> false
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))